import type { RouteRecordRaw } from 'vue-router';

/**
 * 来自服务器的菜单的结构
 *
 * 单个结构
 */
export interface Menu {
  /**
   * 显示名字
   */
  title: string;

  /**
   * 显示名字
   */
  name: string;
  /**
   * 组件对应路径
   */
  component?: string;
  /**
   * 图标 可有可无
   * {@link iconModules}
   */
  icon?: string;

  /**
   * 子菜单
   * 没有子菜单表示是可点击的标签
   */
  children?: Menu[];

  /**
   * 排序 小的在前
   */
  sort: number;

  /**
   * 类型
   * "0":菜单
   * "1":按钮
   */
  type: number;

  /**
   * 主键
   */
  id: number;

  /**
   * 菜单路径信息
   */
  path?: string;

  keepAlive?: string;
}

export interface MenuState {
  serverMenu: RouteRecordRaw[];
}
